home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / CBGRX103.ZIP / contrib / libgrx / src / p8.h < prev    next >
Text File  |  1993-12-06  |  3KB  |  75 lines

  1. /**
  2.  ** P8.H
  3.  **
  4.  **  Copyright (C) 1992, Csaba Biegl
  5.  **    820 Stirrup Dr, Nashville, TN, 37221
  6.  **    csaba@vuse.vanderbilt.edu
  7.  **
  8.  **  This file is distributed under the terms listed in the document
  9.  **  "copying.cb", available from the author at the address above.
  10.  **  A copy of "copying.cb" should accompany this file; if not, a copy
  11.  **  should be available from where this file was obtained.  This file
  12.  **  may not be distributed without a verbatim copy of "copying.cb".
  13.  **  You should also have received a copy of the GNU General Public
  14.  **  License along with this program (it is in the file "copying");
  15.  **  if not, write to the Free Software Foundation, Inc., 675 Mass Ave,
  16.  **  Cambridge, MA 02139, USA.
  17.  **
  18.  **  This program is distributed in the hope that it will be useful,
  19.  **  but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.  **  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21.  **  GNU General Public License for more details.
  22.  **/
  23.  
  24. #ifdef  __TURBOC__
  25. #pragma inline
  26. #endif
  27.  
  28. #include "grx.h"
  29. #include "libgrx.h"
  30. #include "vgaregs.h"
  31.  
  32. typedef unsigned char far *pixptr;    /* pixel pointer */
  33. #define C_SIGNIF    0xff        /* significant bits in a color */
  34. extern  int _GrP8DrawTable[];        /* drawing control table */
  35.  
  36. #ifdef _INLINE256
  37. # define P_ADDRESS(cxt,off)  ((pixptr)(off))
  38. # define P_XADDRESS(cxt,off) ((pixptr)((cxt)->gc_baseaddr +
  39.      (((long)(off) - (long)((cxt)->gc_baseaddr)) >> 2)
  40. ))
  41. #else
  42. # define P_ADDRESS(cxt,off)  ((pixptr)((cxt)->gc_baseaddr +        \
  43.      (unsigned)(COORD_Y(off) * (cxt)->gc_lineoffset) +            \
  44.      (unsigned)(COORD_X(off))                        \
  45. ))
  46. # define P_XADDRESS(cxt,off)  ((pixptr)((cxt)->gc_baseaddr +        \
  47.      ((unsigned)(COORD_Y(off) * (cxt)->gc_lineoffset) >> 2) +        \
  48.      ((unsigned)(COORD_X(off)) >> 2)                    \
  49. ))
  50. #endif /* _INLINE256 */
  51.  
  52. extern  int  _GrP8Chain4Off;        /* turns off plane mode */
  53. extern  int  _GrP8Chain4On;        /* turns on plane mode */
  54. extern  char _GrP8UsePlanarMode;    /* set with well-behaved cards */
  55. extern  char _GrP8PlanarModeOn;        /* plane mode status flag */
  56. extern  int  _GrP8RmaskTable[];        /* right plane masks */
  57. extern  int  _GrP8LmaskTable[];        /* left plane masks */
  58.  
  59. #define PLANAR_MODE_ON() do {                        \
  60.     if(!_GrP8PlanarModeOn) {                        \
  61.     __SET_VGA_REG__(VGA_SEQUENCER_PORT,_GrP8Chain4Off,0);        \
  62.     _GrP8PlanarModeOn = TRUE;                    \
  63.     }                                    \
  64. } while(0)
  65.  
  66. #define PLANAR_MODE_OFF() do {                        \
  67.     if(_GrP8PlanarModeOn) {                        \
  68.     __SET_VGA_REG__(VGA_SEQUENCER_PORT,_GrP8Chain4On,0);        \
  69.     _SetVGAPlaneMask(0xff);                        \
  70.     _GrP8PlanarModeOn = FALSE;                    \
  71.     }                                    \
  72. } while(0)
  73.  
  74.  
  75.